home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / UUCP / UUCon / Source / LogController.m < prev    next >
Text File  |  1992-11-10  |  3KB  |  128 lines

  1. /*
  2.  
  3.   Ronin Consulting, Inc.
  4.     Copyright (C) 1992, Nicholas Christopher (nwc@gun.com)
  5.  
  6.     This library is free software; you can redistribute it and/or
  7.     modify it under the terms of the GNU Library General Public
  8.     License as published by the Free Software Foundation; either
  9.     version 2 of the License, or (at your option) any later version.
  10.  
  11.     This library is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.     Library General Public License for more details.
  15.  
  16.     You should have received a copy of the GNU Library General Public
  17.     License along with this library; if not, write to the Free
  18.     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  
  20. */
  21. #import "Subprocess.h"
  22. #import "EnhancedText.h"
  23. #import "LogController.h"
  24. #import "StringStorage.h"
  25. #import <appkit/appkit.h>
  26.  
  27. static float offsetCoord = 0.0;
  28.  
  29. @implementation LogController
  30.  
  31. - makeKeyAndOrderFront:sender
  32. {
  33.    char    path[MAXPATHLEN+1];
  34.    NXRect theFrame;
  35.    
  36.    if(!window)
  37.    {
  38.       if(![[NXBundle mainBundle] getPath:path forResource:"LogController" ofType:"nib"])
  39.       {
  40.      NXLogError("Could not find LogController.nib");
  41.      return self;
  42.       }
  43.       
  44.  
  45.       if(![NXApp loadNibFile: path owner: self])
  46.       {
  47.      NXLogError("Could not load LogController.nib");
  48.      return self;
  49.       }
  50.       
  51.       NXLogError("makeKeyAndOrderFront called for %s", [cmd stringValue]);
  52.       subProc = [[Subprocess alloc] init: [cmd stringValue] withDelegate: self];
  53.    }
  54.    
  55.    if(![window setFrameUsingName: [name stringValue]]) /* see if we save the window position... */
  56.    {
  57.       [window getFrame: &theFrame];         /* if not just offset from last window some */
  58.       [window moveTo: theFrame.origin.x + offsetCoord : theFrame.origin.y - offsetCoord];
  59.       offsetCoord += 10;
  60.    }
  61.    [window setFrameAutosaveName: [name stringValue]];
  62.    [window setTitle: [name stringValue]];
  63.    [window makeKeyAndOrderFront: self];
  64.    
  65.    return self;
  66. }
  67.  
  68. - initForCommand: (const char *)cmdStr entitled: (const char *)myName;
  69. {
  70.    [super init];
  71.    window = nil;
  72.    cmd = [[StringStorage alloc] init: cmdStr];
  73.    name = [[StringStorage alloc] init: myName];
  74.    return self;
  75. }
  76.  
  77. - free
  78. {
  79.    if(subProc)
  80.        [subProc free];
  81.  
  82.    [cmd free];
  83.    [name free];
  84.    return [super free];
  85. }
  86.  
  87.        
  88. - logClear
  89. {
  90.    [logView empty: self];
  91.    return self;
  92. }
  93.  
  94. @end
  95.  
  96.  
  97. @implementation LogController (SubprocessDelegate)
  98.  
  99. - subprocess:sender done:(int)exitStatus
  100. {
  101.    [logView appendString: "tail exited... yips!\n"];
  102.    return self;
  103. }
  104.  
  105. - subprocess:sender output:(char *)buffer
  106. {
  107.    [logView appendString: buffer];
  108.    [logView appendString: "\n"];
  109.    return self;
  110. }
  111.  
  112. - subprocess:sender stderrOutput:(char *)buffer
  113. {
  114.    [logView appendString: buffer];
  115.    [logView appendString: "\n"];
  116.    return self;
  117. }
  118.  
  119. - subprocess:sender error:(const char *)errorString
  120. {
  121.    [logView appendString: "tail failed to start."];
  122.    return self;
  123. }
  124.  
  125.  
  126. @end                         /* SubprocessDelegate */
  127.  
  128.